﻿//#define _CRT_SECURE_NO_WARNINGS  1
////一定要动手，例子不管多么简单，建议至少自己手敲一遍看看是否理解了里头的细枝末节。
////一定要学会思考，思考为什么要这样，而不是那样。还要举一反三地思考
//#include<iostream>
//using namespace std;
////class son {
////private:
////	int _a;
////public:
////	//有参构造，如果我们提供了有参构造，则编译器不会提供默认构造函数
////	son(int a )
////		:_a(a)
////	{
////		cout << "int a = 0" << endl;
////	}
////};
////class time1 {
////private:
////	//声明
////	int _year;
////	const int _month; //const：必须在定义是初始化
////	int& _day;  //引用:必须在定义是初始化
////	son _abc;   //自定义类型，没有默认构造函数
////public:
////	time1(int year, int month, int day)
////		:_month(month)
////		, _day(day)
////		,_abc(10)
////	{
////		//_year没有在初始化列表中显式的写出来定义，但是初始化列表也会定义，初始值为随机值
////		// 如果是自定义类型会调用他的默认构造函数，没有默认构造函数则在初始化列表中初始化
////		//函数体内初始化
////		this->_year = year;
////	}
////};
//class A
//{
//public:
//	A(int a)
//		:_a1(a)
//		, _a2(_a1)
//	{}
//
//	void Print() {
//		cout << _a1 << " " << _a2 << endl;
//	}
//private:
//	int _a2;
//	int _a1;
//};
//int main() {
//	A aa(1);
//	aa.Print();
//}
////void test01()
////{
////	time1 s(2023, 11, 16);
////}
////int main()
////{
////	test01();
////	system("pause");
////	return 0;
////}